//#define _CRT_SECURE_NO_WARNINGS 1
//
//#include<bits/stdc++.h>
//
//using namespace std;
//
//int main()
//{
//	string s;
//	cin >> s;
//
//	int ret = -1;
//	for (int i = 0; i < s.size() - 1; i++)
//		if (s[i] == s[i + 1])
//			ret = 2;
//	if (ret != 2)
//		for (int i = 0; i < s.size() - 2; i++)
//			if (s[i] == s[i + 2])
//				ret = 3;
//	cout << ret << endl;
//
//
//	return 0;
//}


//
//#include<bits/stdc++.h>
//
//using namespace std;
//
//int main()
//{
//
//	priority_queue<pair<int, int>> pq;
//	int n;
//	cin >> n;
//	int t;
//	int dp[200100] = { 0 };
//	cin >> dp[1];
//	for (int i = 2; i <= n; i++)
//	{
//		cin >> t;
//		dp[i] = max(dp[i - 1], dp[i - 2] + t);
//	}
//
//
//	cout << dp[n] << endl;
//
//	return 0;
//}

#include<bits/stdc++.h>

using namespace std;

int main()
{
	int n, p;
	cin >> n >> p;
	vector<int> arr(n);

	for (int i = 0; i < n; i++)
		cin >> arr[i];

	sort(arr.begin(), arr.end());

	int ret = 0;

	int l = 0, r = 0;
	while (r < n)
	{
		while (l <= r && arr[r] - arr[l] > 2*p)
		{
			l++;
		}
		ret = max(r - l + 1, ret);
		r++;
	}

	cout << ret << endl;

	return 0;
}